package demo6;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 何华树
 * Date: 2024-09-03
 * Time: 12:24
 */
class OutClass1 {
    public int a = 1;
    public static int b = 2;
    public static final int c = 3;
    class InnerClass1 {
        public int a = 1000;
        public int d = 4;
        public static int e= 5;
        public static final int f = 6;
        public void func() {
            //实例内部类里，可以直接访问 内外部类的所有变量和方法。
            System.out.println(b);
            System.out.println(c);
            System.out.println(d);
            System.out.println(e);
            System.out.println(f);
            //如果内外部类 有相同的变量名，则优先使用内部类的
            System.out.println(a);//1000

            //如果要在内部类里面访问 外部类相同的a，有两种方式
            //1.new对象
            System.out.println(new OutClass1().a);
            //2.通过 外部类类名.this.a
            System.out.println(OutClass1.this.a);

            //内部类里， 有两个 this
            //1.内部类自己的this
            System.out.println(this.a);
            //2.外部类的this
            System.out.println(OutClass1.this.a);

        }
    }
}
public class Test1 {
    public static void main1(String[] args) {
        //实例化一个 实例内部类的步骤：
        //先通过 new 外部类的对象，通过外部类的引用去 new内部类对象。
        OutClass1 outClass1 = new OutClass1();
        OutClass1.InnerClass1 innerClass1 = outClass1.new InnerClass1();
        innerClass1.func();
    }
}
